This invention relates to a system for transferring data words from an input source to an output circuit such as a bus which can accept a word, as by issuing an acknowledge signal, and can refuse a word, as by issuing a negative acknowledge signal, rendering it necessary in the case of a refusal to retry transferring the word to the output circuit.
It is a conventional practice in computer systems to arrange multiple devices along a bus in such a way that any two devices can communicate with each other by means of the bus. In a typical operation, a device attempting to send information bids for control of the bus. When the device wins control of the bus, it sends a data word on the bus, along with the address of the device which is to receive the word. If the addressed device is capable of receiving the word at that time, it does so and sends an acknowledge (ACK) signal, indicating the acceptance.
If the addressed device is not capable at that time of receiving the word, it issues a negative acknowledge (NACK) signal. There can be a sufficiently large delay between the sending of the word on the bus and the receipt by the sending device of an ACK or NACK, that there is time for the sending device to send another word or words on the bus in the interim. The other words, for example, may be destined for still another device. It will be recognized that greater throughput will be obtained if a system is available which can send other words during this interval, without waiting for the receipt of the ACK or NACK. However, it will be also recognized that such a system must retain the words sent on the bus, until receiving an ACK or NACK, so that if the transfer is refused by one of the devices, it can be retried. Such a system has been conceived in accordance with the present invention.